﻿Public Class xtf_ABMproduccion

    Dim ulg_row As DataRow
    Dim obj_Produccion As cls_produccion_ = Nothing
    Dim dtt_produccionresultado_ As DataTable
    Dim dtt_detalleproduccion As DataTable
    Dim dtt_detalleresultado As DataTable
    Dim dtt_resumen As DataTable
    Dim dtt_produccionrecepcion_ As DataTable
    Dim dtt_produccionentrega_ As DataTable

    Private obj_PDarticulo_ As New Collections.Generic.List(Of cls_PDarticulo_)
    Private obj_PDmaquinariatarea_ As New Collections.Generic.List(Of cls_PDmaquinariatarea_)
    Private obj_PDproceso_ As New Collections.Generic.List(Of cls_PDproceso_)


    Public Sub New()
        InitializeComponent()

        'Prepara grid y datasource produccionresultado----------------------------------------------------
        gdv_produccionresultado_.Tag = New Collections.Generic.List(Of cls_produccionresultado_)
        dtt_produccionresultado_ = New DataTable
        dtt_produccionresultado_.Columns.Add("Articulo", GetType(String))
        dtt_produccionresultado_.Columns.Add("Cantidad", GetType(Decimal))
        dtt_produccionresultado_.Columns.Add("Unidad", GetType(String))
        dtt_produccionresultado_.Columns.Add("objeto", GetType(Object))

        gdc_produccionresultado_.DataSource = dtt_produccionresultado_
        gdc_produccionresultado_.ForceInitialize()
        gdv_produccionresultado_.PopulateColumns()
        gdv_produccionresultado_.Columns("objeto").Visible = False
        '-----------------------------------------------------------------------------------------------

        'Prepara grid y datasource produccionrecepcion----------------------------------------------------
        gdv_produccionrecepcion_.Tag = New Collections.Generic.List(Of cls_produccionrecepcion_)
        dtt_produccionrecepcion_ = New DataTable
        dtt_produccionrecepcion_.Columns.Add("Fecha", GetType(DateTime))
        dtt_produccionrecepcion_.Columns.Add("Articulo", GetType(String))
        dtt_produccionrecepcion_.Columns.Add("Cantidad", GetType(Decimal))
        dtt_produccionrecepcion_.Columns.Add("Unidad", GetType(String))
        dtt_produccionrecepcion_.Columns.Add("objeto", GetType(Object))

        gdc_produccionrecepcion_.DataSource = dtt_produccionrecepcion_
        gdc_produccionrecepcion_.ForceInitialize()
        gdv_produccionrecepcion_.PopulateColumns()
        gdv_produccionrecepcion_.Columns("objeto").Visible = False
        '-----------------------------------------------------------------------------------------------

        'Prepara grid y datasource produccionentrega----------------------------------------------------
        gdv_produccionentrega_.Tag = New Collections.Generic.List(Of cls_produccionentrega_)
        dtt_produccionentrega_ = New DataTable
        dtt_produccionentrega_.Columns.Add("Fecha", GetType(DateTime))
        dtt_produccionentrega_.Columns.Add("Articulo", GetType(String))
        dtt_produccionentrega_.Columns.Add("Cantidad", GetType(Decimal))
        dtt_produccionentrega_.Columns.Add("Unidad", GetType(String))
        dtt_produccionentrega_.Columns.Add("objeto", GetType(Object))

        gdc_produccionentrega_.DataSource = dtt_produccionentrega_
        gdc_produccionentrega_.ForceInitialize()
        gdv_produccionentrega_.PopulateColumns()
        gdv_produccionentrega_.Columns("objeto").Visible = False
        '-----------------------------------------------------------------------------------------------

        'Prepara grid y datasource detalleproducciono----------------------------------------------------
        dtt_detalleproduccion = New DataTable
        dtt_detalleproduccion.Columns.Add("Tipo", GetType(String))
        dtt_detalleproduccion.Columns.Add("Nombre", GetType(String))
        dtt_detalleproduccion.Columns.Add("Cantidad", GetType(Decimal))
        dtt_detalleproduccion.Columns.Add("Valor", GetType(Decimal))
        dtt_detalleproduccion.Columns.Add("Total", GetType(Decimal))
        dtt_detalleproduccion.Columns.Add("objeto", GetType(Object))

        gdc_detalle.DataSource = dtt_detalleproduccion
        gdc_detalle.ForceInitialize()
        gdv_detalle.PopulateColumns()
        gdv_detalle.Columns("objeto").Visible = False
        gdv_detalle.Columns("Cantidad").Visible = False
        gdv_detalle.Columns("Valor").Visible = False
        gdv_detalle.Columns("Total").Visible = False
        '-----------------------------------------------------------------------------------------------


        'Prepara grid y datasource detalleresultado----------------------------------------------------
        dtt_detalleresultado = New DataTable
        dtt_detalleresultado.Columns.Add("Tipo", GetType(String))
        dtt_detalleresultado.Columns.Add("Nombre", GetType(String))
        dtt_detalleresultado.Columns.Add("objeto", GetType(Object))

        gdc_detalleresultado.DataSource = dtt_detalleresultado
        gdc_detalleresultado.ForceInitialize()
        gdv_detalleresultado.PopulateColumns()
        gdv_detalleresultado.Columns("objeto").Visible = False

        gdv_detalleresultado.Columns("Tipo").Group()

        gdv_detalleresultado.ExpandAllGroups()
        '-----------------------------------------------------------------------------------------------


        'custom ABM Bar's--------------------------------------------------------------------------------
        'Dim bbi_CerrarProduccion As New DevExpress.XtraBars.BarButtonItem()
        'bbi_CerrarProduccion.Caption = "CerrarProduccion"
        ''bbi_CerrarProduccion.Glyph = CType(Resources.GetObject("bbi_guardar.Glyph"), System.Drawing.Image)
        'bbi_CerrarProduccion.Id = 1
        'bbi_CerrarProduccion.Name = "bbi_CerrarProduccion"
        'BarManager1.Items.Add(bbi_CerrarProduccion)
        'Bar2.LinksPersistInfo.AddRange(New DevExpress.XtraBars.LinkPersistInfo() {New DevExpress.XtraBars.LinkPersistInfo(bbi_CerrarProduccion)})
        'AddHandler (bbi_CerrarProduccion.ItemClick), btn_Confirmar_Click)
        '-----------------------------------------------------------------------------------------------
        AgregarValidaciones()
        lcg_detalle.Enabled = False
        pnl_ProducidoTools.Enabled = False
        pnl_producidoPrincipal.Enabled = False
        CargarSegunValor()
        CargarSegunValorProceso()
    End Sub

    Private Sub CargarSegunValor()
        cbo_PDarticuloresultadoTipoSegunProveedor.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionarticulo_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionarticulo_.enu_segunvalor))
            cbo_PDarticuloresultadoTipoSegunProveedor.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_PDarticuloresultadoTipoSegunProveedor.SelectedIndex = 0
    End Sub

    Private Sub CargarSegunValorProceso()
        cbo_PDprocesoresultadoTipoSegunValor.Properties.Items.Clear()
        For Each tipovalor As cls_articulocomposicionproceso_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionproceso_.enu_segunvalor))
            cbo_PDprocesoresultadoTipoSegunValor.Properties.Items.Add(EnumDescription(tipovalor))
        Next
        cbo_PDprocesoresultadoTipoSegunValor.SelectedIndex = 0
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_Produccion = New cls_Produccion_
            btn_Registro.Enabled = False
            dtp_Fecha.DateTime = Now
            cbo_Estado.SelectedIndex = 0
            cbo_TipoProduccion.SelectedIndex = 0
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef Produccion As cls_produccion_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_Produccion) Then
            obj_Produccion = New cls_Produccion_
        End If
        obj_Produccion = Produccion
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_Produccion.ToString
        txt_ID.Text = obj_Produccion.idProduccion
        btn_OrdendeProduccion.Enabled = True
        lbl_producidoArticulo.Text = obj_Produccion.articulo.ToString

        'Cargo produccionresultado-------------------------------------------------------------------
        dtt_produccionresultado_.Clear()
        gdv_produccionresultado_.Tag.Clear()
        If Not IsNothing(obj_Produccion.produccionresultado_) Then
            If Not IsNothing(obj_Produccion.produccionresultado_.Items) Then

                'produccion resultado primario---------------------------------------------------------------------
                txt_producidoid.Text = obj_Produccion.produccionresultado_.Items(0).idproduccionresultado
                lbl_producidoArticulo.Text = obj_Produccion.produccionresultado_.Items(0).articulo.ToString
                cbo_producidoUnidad.Properties.Items.Clear()
                If Not IsNothing(obj_Produccion.produccionresultado_.Items(0).articulo) Then
                    If Not IsNothing(obj_Produccion.produccionresultado_.Items(0).articulo.unidad) Then
                        cbo_producidoUnidad.Properties.Items.Clear()
                        For Each unidaddetalle As cls_unidaddetalle_ In obj_Produccion.produccionresultado_.Items(0).articulo.unidad.unidaddetalle_.Items
                            cbo_producidoUnidad.Properties.Items.Add(unidaddetalle)
                        Next
                        cbo_producidoUnidad.SelectedIndex = 0
                        cbo_producidoUnidad.Enabled = True
                    End If
                End If
                For Each item As cls_unidaddetalle_ In cbo_producidoUnidad.Properties.Items
                    If item.idunidaddetalle = obj_Produccion.produccionresultado_.Items(0).idunidaddetalle Then
                        cbo_producidoUnidad.SelectedItem = item
                        Exit For
                    End If
                Next
                txt_producidoCantidad.Text = CType(cbo_producidoUnidad.SelectedItem, cls_unidaddetalle_).CCantCargar(obj_Produccion.produccionresultado_.Items(0).cantidad)
                txt_producidoNotas.Text = obj_Produccion.produccionresultado_.Items(0).notas
                'produccion resultado primario---------------------------------------------------------------------


                For i As Integer = 1 To obj_Produccion.produccionresultado_.Items.Count - 1
                    Dim produccionresultado As cls_produccionresultado_ = obj_Produccion.produccionresultado_.Items(i)
                    Dim Item As DataRow = dtt_produccionresultado_.NewRow
                    Item("Articulo") = produccionresultado.articulo.ToString
                    Item("Cantidad") = produccionresultado.unidaddetalle.CCantCargar(produccionresultado.cantidad)
                    Item("Unidad") = produccionresultado.unidaddetalle.ToString
                    Item("objeto") = produccionresultado
                    dtt_produccionresultado_.Rows.Add(Item)
                Next
            End If
        End If
        '--------------------------------------------------------------------------------------------

        'Cargo produccionrecepcion-------------------------------------------------------------------
        dtt_produccionrecepcion_.Clear()
        gdv_produccionrecepcion_.Tag.Clear()
        If Not IsNothing(obj_Produccion.produccionrecepcion_) Then
            If Not IsNothing(obj_Produccion.produccionrecepcion_.Items) Then
                For Each produccionrecepcion As cls_produccionrecepcion_ In obj_Produccion.produccionrecepcion_.Items
                    Dim Item As DataRow = dtt_produccionrecepcion_.NewRow
                    Item("Fecha") = produccionrecepcion.fecha
                    Item("Articulo") = produccionrecepcion.articulo.ToString
                    Item("Cantidad") = produccionrecepcion.unidaddetalle.CCantCargar(produccionrecepcion.cantidad)
                    Item("Unidad") = produccionrecepcion.unidaddetalle.ToString
                    Item("objeto") = produccionrecepcion
                    dtt_produccionrecepcion_.Rows.Add(Item)
                Next
            End If
        End If
        '--------------------------------------------------------------------------------------------

        'Cargo produccionentrega-------------------------------------------------------------------
        dtt_produccionentrega_.Clear()
        gdv_produccionentrega_.Tag.Clear()
        If Not IsNothing(obj_Produccion.produccionentrega_) Then
            If Not IsNothing(obj_Produccion.produccionentrega_.Items) Then
                For Each produccionentrega As cls_produccionentrega_ In obj_Produccion.produccionentrega_.Items
                    Dim Item As DataRow = dtt_produccionentrega_.NewRow
                    Item("Fecha") = produccionentrega.fecha
                    Item("Articulo") = produccionentrega.articulo.ToString
                    Item("Cantidad") = produccionentrega.unidaddetalle.CCantCargar(produccionentrega.cantidad)
                    Item("Unidad") = produccionentrega.unidaddetalle.ToString
                    Item("objeto") = produccionentrega
                    dtt_produccionentrega_.Rows.Add(Item)
                Next
            End If
        End If
        '--------------------------------------------------------------------------------------------

        If obj_Produccion.idarticulo <> 0 Then
            cbo_TipoProduccion.SelectedIndex = 0
            txt_AProducir.Text = obj_Produccion.articulo.ToString
            txt_AProducir.Tag = obj_Produccion.articulo
        End If
        If obj_Produccion.idproceso <> 0 Then
            cbo_TipoProduccion.SelectedIndex = 1
            txt_AProducir.Text = obj_Produccion.proceso.ToString
            txt_AProducir.Tag = obj_Produccion.proceso
        End If
        If obj_Produccion.idmaquinariatarea <> 0 Then
            cbo_TipoProduccion.SelectedIndex = 2
            txt_AProducir.Text = obj_Produccion.maquinariatarea.ToString
            txt_AProducir.Tag = obj_Produccion.maquinariatarea
        End If

        dtp_Fecha.DateTime = obj_Produccion.fecha
        txt_Notas.Text = obj_Produccion.notas
        cbo_Estado.SelectedIndex = obj_Produccion.estado

        'cargo detalle produccion---------------------------------------------------------------------------
        dtt_detalleproduccion.Rows.Clear()
        dtt_detalleresultado.Rows.Clear()
        If Not IsNothing(obj_Produccion.PDarticulo_) Then
            If Not IsNothing(obj_Produccion.PDarticulo_.Items) Then
                For Each ACA As cls_PDarticulo_ In obj_Produccion.PDarticulo_.Items
                    Dim dtt_rowresultado As DataRow = dtt_detalleresultado.NewRow
                    dtt_rowresultado("Tipo") = "Material"
                    dtt_rowresultado("Nombre") = ACA.articulo.ToString
                    dtt_rowresultado("objeto") = ACA
                    dtt_detalleresultado.Rows.Add(dtt_rowresultado)
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Material"
                    dtt_row("Nombre") = ACA.articulo.ToString
                    dtt_row("Cantidad") = ACA.cantidad
                    dtt_row("Valor") = ACA.valor
                    dtt_row("Total") = ACA.cantidad * ACA.valor
                    dtt_row("objeto") = ACA
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        If Not IsNothing(obj_Produccion.PDproceso_) Then
            If Not IsNothing(obj_Produccion.PDproceso_.Items) Then
                For Each ACP As cls_PDproceso_ In obj_Produccion.PDproceso_.Items
                    Dim dtt_rowresultado As DataRow = dtt_detalleresultado.NewRow
                    dtt_rowresultado("Tipo") = "Procesos Personales"
                    dtt_rowresultado("Nombre") = ACP.proceso.ToString
                    dtt_rowresultado("objeto") = ACP
                    dtt_detalleresultado.Rows.Add(dtt_rowresultado)
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Procesos Personales"
                    dtt_row("Nombre") = ACP.proceso.ToString
                    dtt_row("Cantidad") = ACP.cantidad
                    dtt_row("Valor") = ACP.valor
                    dtt_row("Total") = ACP.cantidad * ACP.valor
                    dtt_row("objeto") = ACP
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        If Not IsNothing(obj_Produccion.PDmaquinariatarea_) Then
            If Not IsNothing(obj_Produccion.PDmaquinariatarea_.Items) Then
                For Each ACM As cls_PDmaquinariatarea_ In obj_Produccion.PDmaquinariatarea_.Items
                    Dim dtt_rowresultado As DataRow = dtt_detalleresultado.NewRow
                    dtt_rowresultado("Tipo") = "Procesos Maquinaria"
                    dtt_rowresultado("Nombre") = ACM.maquinariatarea.ToString
                    dtt_rowresultado("objeto") = ACM
                    dtt_detalleresultado.Rows.Add(dtt_rowresultado)
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Procesos Maquinaria"
                    dtt_row("Nombre") = ACM.maquinariatarea.ToString
                    dtt_row("Cantidad") = ACM.cantidad
                    dtt_row("Valor") = ACM.valor
                    dtt_row("Total") = ACM.cantidad * ACM.valor
                    dtt_row("objeto") = ACM
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        gdv_detalleresultado.ExpandAllGroups()
        '----------------------------------------------------------------------------------------------------

        'cargo produccion externa---------------------------------------------------------------------------
        If Not IsNothing(obj_Produccion.produccionexterna) Then
            opt_produccion.SelectedIndex = 1
            If Not IsNothing(obj_Produccion.produccionexterna.personal) Then
                txt_Personal.Text = obj_Produccion.produccionexterna.personal.ToString
                txt_Personal.Tag = obj_Produccion.produccionexterna.personal
            End If
        End If
        '----------------------------------------------------------------------------------------------------
        lac_general.BeginUpdate()
        Select Case obj_Produccion.estado
            Case cls_produccion_.enu_estado.Abierta
                txt_AProducir.Enabled = True
                dtp_Fecha.Enabled = True
                opt_produccion.Enabled = True
                txt_Personal.Enabled = True
                lcg_detalle.Enabled = False
                pnl_Recepciones.Enabled = False
                pnl_Entregas.Enabled = False
                pnl_ProducidoTools.Enabled = False
                pnl_producidoPrincipal.Enabled = False
                btn_Confirmar.Text = "Confirmar producción"
            Case cls_produccion_.enu_estado.Cancelada
                btn_Confirmar.Text = "Reabrir producción"
                txt_AProducir.Enabled = False
                opt_produccion.Enabled = False
                txt_Personal.Enabled = False
                dtp_Fecha.Enabled = False
                lcg_detalle.Enabled = False
                pnl_ProducidoTools.Enabled = False
                pnl_producidoPrincipal.Enabled = False
                pnl_Recepciones.Enabled = False
                pnl_Entregas.Enabled = False
            Case cls_produccion_.enu_estado.Cerrada
                btn_Confirmar.Text = "Cancelar producción"
                txt_AProducir.Enabled = False
                opt_produccion.Enabled = False
                txt_Personal.Enabled = False
                dtp_Fecha.Enabled = False
                lcg_detalle.Enabled = False
                pnl_ProducidoTools.Enabled = False
                pnl_producidoPrincipal.Enabled = False
                pnl_Recepciones.Enabled = False
                pnl_Entregas.Enabled = False
                cargarResumen()
            Case cls_produccion_.enu_estado.Incompleta
                txt_AProducir.Enabled = False
                opt_produccion.Enabled = False
                txt_Personal.Enabled = False
                dtp_Fecha.Enabled = False
                lcg_detalle.Enabled = True
                pnl_ProducidoTools.Enabled = True
                pnl_producidoPrincipal.Enabled = True
                pnl_Recepciones.Enabled = True
                pnl_Entregas.Enabled = True
                lcg_resumen.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                btn_Confirmar.Text = "Cerrar producción"
        End Select

        If obj_Produccion.estado <> cls_produccion_.enu_estado.Abierta Then
            If obj_Produccion.externa Then
                lcg_DetalleyCostos.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                lcg_Producido.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                lcg_Entregas.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                lcg_Recepciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            Else
                lcg_DetalleyCostos.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                lcg_Producido.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                lcg_Entregas.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                lcg_Recepciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            End If
        End If

        If obj_Produccion.estado = cls_produccion_.enu_estado.Cerrada Then
            TabbedControlGroup1.SelectedTabPage = lcg_resumen
        End If


        lac_general.EndUpdate()


        btn_Registro.Enabled = True

        obj_Produccion.articulo = Nothing
        obj_Produccion.proceso = Nothing
        obj_Produccion.maquinariatarea = Nothing
        obj_Produccion.produccionresultado_ = Nothing
        obj_Produccion.produccionexterna = Nothing
        obj_Produccion.produccionentrega_ = Nothing
        obj_Produccion.produccionrecepcion_ = Nothing
        'obj_Produccion.PDarticulo_ = Nothing
        'obj_Produccion.PDmaquinariatarea_ = Nothing
        'obj_Produccion.PDproceso_ = Nothing

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then

            obj_Produccion.idarticulo = 0
            obj_Produccion.idmaquinariatarea = 0
            obj_Produccion.idproceso = 0
            Select Case cbo_TipoProduccion.SelectedIndex
                Case 0
                    obj_Produccion.idarticulo = CType(txt_AProducir.Tag, cls_articulo_).idarticulo
                    obj_Produccion.articulo = txt_AProducir.Tag
                Case 1
                    obj_Produccion.idproceso = CType(txt_AProducir.Tag, cls_proceso_).idproceso
                    obj_Produccion.proceso = txt_AProducir.Tag
                Case 2
                    obj_Produccion.idmaquinariatarea = CType(txt_AProducir.Tag, cls_maquinariatarea_).idmaquinariatarea
                    obj_Produccion.maquinariatarea = txt_AProducir.Tag
            End Select

            obj_Produccion.fecha = dtp_Fecha.DateTime
            obj_Produccion.notas = txt_Notas.Text
            obj_Produccion.estado = cbo_Estado.SelectedIndex

            'Guardo producciondetalle--------------------------------------------------------
            For Each item As cls_PDarticulo_ In obj_PDarticulo_
                item.Eliminar(item.idPDarticulo)
            Next
            For Each item As cls_PDmaquinariatarea_ In obj_PDmaquinariatarea_
                item.Eliminar(item.idPDmaquinariatarea)
            Next
            For Each item As cls_PDproceso_ In obj_PDproceso_
                item.Eliminar(item.idproceso)
            Next

            For Each row As DataRow In dtt_detalleproduccion.Rows
                'MsgBox(row("objeto").GetType.ToString)
                Select Case row("objeto").GetType.ToString
                    Case GetType(cls_articulocomposicionarticulo_).ToString
                        If IsNothing(obj_Produccion.PDarticulo_) Then
                            obj_Produccion.PDarticulo_ = New cls_PDarticulo_
                        End If
                        If IsNothing(obj_Produccion.PDarticulo_.Items) Then
                            obj_Produccion.PDarticulo_.Items = New Collections.Generic.List(Of cls_PDarticulo_)()
                        End If
                        Dim ACA As cls_articulocomposicionarticulo_ = row("objeto")
                        Dim PDA As New cls_PDarticulo_
                        PDA.idarticulo = ACA.idarticulo
                        PDA.cantidad = ACA.cantidad
                        PDA.segunproduccion = ACA.segunproduccion
                        PDA.segunproveedor = ACA.segunproveedor
                        PDA.tiposegunproduccion = ACA.tiposegunproduccion
                        If ACA.articulo.costobloqueado Then
                            PDA.tiposegunproveedor = ACA.articulo.tipocosto
                            PDA.idproveedor = ACA.articulo.idproveedor
                            PDA.valor = ACA.articulo.costo
                        Else
                            PDA.tiposegunproveedor = ACA.tiposegunproveedor
                            PDA.idproveedor = ACA.idproveedor
                            PDA.valor = ACA.valor
                        End If

                        obj_Produccion.PDarticulo_.Items.Add(PDA)
                    Case GetType(cls_articulocomposicionmaquinariatarea_).ToString
                        If IsNothing(obj_Produccion.PDmaquinariatarea_) Then
                            obj_Produccion.PDmaquinariatarea_ = New cls_PDmaquinariatarea_
                        End If
                        If IsNothing(obj_Produccion.PDmaquinariatarea_.Items) Then
                            obj_Produccion.PDmaquinariatarea_.Items = New Collections.Generic.List(Of cls_PDmaquinariatarea_)()
                        End If
                        Dim ACM As cls_articulocomposicionmaquinariatarea_ = row("objeto")
                        Dim PDM As New cls_PDmaquinariatarea_
                        PDM.idmaquinariatarea = ACM.idmaquinariatarea
                        PDM.cantidad = ACM.cantidad
                        PDM.segunproduccion = ACM.segunproduccion
                        PDM.tiposegunproduccion = ACM.tiposegunproduccion
                        PDM.valor = ACM.valor
                        obj_Produccion.PDmaquinariatarea_.Items.Add(PDM)
                    Case GetType(cls_articulocomposicionproceso_).ToString
                        If IsNothing(obj_Produccion.PDproceso_) Then
                            obj_Produccion.PDproceso_ = New cls_PDproceso_
                        End If
                        If IsNothing(obj_Produccion.PDproceso_.Items) Then
                            obj_Produccion.PDproceso_.Items = New Collections.Generic.List(Of cls_PDproceso_)()
                        End If
                        Dim ACP As cls_articulocomposicionproceso_ = row("objeto")
                        Dim PDP As New cls_PDproceso_
                        PDP.idproceso = ACP.idproceso
                        PDP.cantidad = ACP.cantidad
                        PDP.segunproduccion = ACP.segunproduccion
                        PDP.tiposegunproduccion = ACP.tiposegunproduccion
                        PDP.tiposegunvalor = ACP.tiposegunvalor
                        PDP.idpersonal = ACP.idpersonal
                        PDP.valor = ACP.valor
                        obj_Produccion.PDproceso_.Items.Add(PDP)
                End Select
            Next

            '--------------------------------------------------------------------------------

            'Guardo produccionresultado------------------------------------------------------
            If IsNothing(obj_Produccion.produccionresultado_) Then
                obj_Produccion.produccionresultado_ = New cls_produccionresultado_
            End If
            If IsNothing(obj_Produccion.produccionresultado_.Items) Then
                obj_Produccion.produccionresultado_.Items = New Collections.Generic.List(Of cls_produccionresultado_)
            End If
            obj_Produccion.produccionresultado_.Items = New Collections.Generic.List(Of cls_produccionresultado_)

            If obj_Produccion.externa = False Then
                Dim obj_produccionresultado As New cls_produccionresultado_
                obj_produccionresultado.idproduccionresultado = txt_producidoid.Text
                obj_produccionresultado.idarticulo = obj_Produccion.idarticulo
                obj_produccionresultado.cantidad = CType(cbo_producidoUnidad.SelectedItem, cls_unidaddetalle_).CCantGuardar(txt_producidoCantidad.Text)
                obj_produccionresultado.notas = txt_producidoNotas.Text
                obj_produccionresultado.idunidaddetalle = CType(cbo_producidoUnidad.SelectedItem, cls_unidaddetalle_).idunidaddetalle
                obj_produccionresultado.idproduccion = obj_Produccion.idproduccion
                obj_Produccion.produccionresultado_.Items.Add(obj_produccionresultado)
            End If

            For Each Elemento As DataRow In dtt_produccionresultado_.Rows
                obj_Produccion.produccionresultado_.Items.Add(Elemento("Objeto"))
            Next
            For Each Elemento As cls_produccionresultado_ In gdv_produccionresultado_.Tag
                If Elemento.idproduccionresultado <> 0 Then
                    Elemento.Eliminar(Elemento.idproduccionresultado)
                End If
            Next
            '---------------------------------------------------------------------

            'Guardo produccionentrega------------------------------------------------------
            If IsNothing(obj_Produccion.produccionentrega_) Then
                obj_Produccion.produccionentrega_ = New cls_produccionentrega_
            End If
            If IsNothing(obj_Produccion.produccionentrega_.Items) Then
                obj_Produccion.produccionentrega_.Items = New Collections.Generic.List(Of cls_produccionentrega_)
            End If
            obj_Produccion.produccionentrega_.Items = New Collections.Generic.List(Of cls_produccionentrega_)
            For Each Elemento As DataRow In dtt_produccionentrega_.Rows
                obj_Produccion.produccionentrega_.Items.Add(Elemento("Objeto"))
            Next
            For Each Elemento As cls_produccionentrega_ In gdv_produccionentrega_.Tag
                If Elemento.idproduccionentrega <> 0 Then
                    Elemento.Eliminar(Elemento.idproduccionentrega)
                End If
            Next
            '---------------------------------------------------------------------

            'Guardo produccionrecepcion------------------------------------------------------
            If IsNothing(obj_Produccion.produccionrecepcion_) Then
                obj_Produccion.produccionrecepcion_ = New cls_produccionrecepcion_
            End If
            If IsNothing(obj_Produccion.produccionrecepcion_.Items) Then
                obj_Produccion.produccionrecepcion_.Items = New Collections.Generic.List(Of cls_produccionrecepcion_)
            End If
            obj_Produccion.produccionrecepcion_.Items = New Collections.Generic.List(Of cls_produccionrecepcion_)
            For Each Elemento As DataRow In dtt_produccionrecepcion_.Rows
                obj_Produccion.produccionrecepcion_.Items.Add(Elemento("Objeto"))
            Next
            For Each Elemento As cls_produccionrecepcion_ In gdv_produccionrecepcion_.Tag
                If Elemento.idproduccionrecepcion <> 0 Then
                    Elemento.Eliminar(Elemento.idproduccionrecepcion)
                End If
            Next
            '---------------------------------------------------------------------

            'guardo produccion externa---------------------------------------------------------------------------
            If opt_produccion.SelectedIndex = 1 Then
                If IsNothing(obj_Produccion.produccionexterna) Then
                    obj_Produccion.produccionexterna = New cls_produccionexterna_
                End If
                If Not IsNothing(txt_Personal.Tag) Then
                    obj_Produccion.produccionexterna.idpersonal = (CType(txt_Personal.Tag, cls_personal_).idpersonal)
                End If
            Else
                If Not IsNothing(obj_Produccion.produccionexterna) Then
                    If obj_Produccion.produccionexterna.idproduccionexterna <> 0 Then
                        obj_Produccion.produccionexterna.Eliminar(obj_Produccion.produccionexterna.idproduccionexterna)
                        obj_Produccion.produccionexterna = Nothing
                    End If
                End If
            End If
            '----------------------------------------------------------------------------------------------------

            'PARCHE VALOR FINAL
            If obj_Produccion.estado = cls_produccion_.enu_estado.Cerrada Then
                cargarResumen()
                obj_Produccion.costofinal = txt_resumenvalorfinal.Text
            End If


            If txt_ID.Text = "" Then
                obj_Produccion.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOproduccion_).AgregarItem(obj_Produccion)
                End If
                Modificar(obj_Produccion, frm_listado, ulg_row)
            Else
                obj_Produccion.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOproduccion_).ModificarItem(obj_Produccion, ulg_row)
                End If
                Modificar(obj_Produccion, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_Produccion.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_Produccion.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub txt_Articulo_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_AProducir.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Dim Objeto_ As Object

        Select Case cbo_TipoProduccion.SelectedIndex
            Case 0
                Objeto_ = New cls_articulo_
                Objeto_.CargarTodos()
                buscar = New xtf_buscardor("Articulos", Objeto_, {"nombre|Nombre", "codigo|Codigo", "descripcion|Descripcion"})
            Case 1
                Objeto_ = New cls_proceso_
                Objeto_.CargarTodos()
                buscar = New xtf_buscardor("Procesos Personales", Objeto_, {"nombre|Nombre", "descripcion|Descripcion"})
            Case 2
                Objeto_ = New cls_maquinariatarea_
                Objeto_.CargarTodos()
                buscar = New xtf_buscardor("Procesos Maquinaria", Objeto_, {"nombre|Nombre", "descripcion|Descripcion"})
        End Select
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_AProducir.Text = buscar.obj_resultado.ToString
            txt_AProducir.Tag = buscar.obj_resultado
            cargardetalleProduccion()
        End If
        If Not IsNothing(buscar.obj_resultado.unidad) Then
            cbo_producidoUnidad.Properties.Items.Clear()
            For Each unidaddetalle As cls_unidaddetalle_ In buscar.obj_resultado.unidad.unidaddetalle_.Items
                cbo_producidoUnidad.Properties.Items.Add(unidaddetalle)
            Next
            cbo_producidoUnidad.SelectedIndex = 0
            cbo_producidoUnidad.Enabled = True
        End If
    End Sub

    Private Sub cargardetalleProduccion()
        dtt_detalleproduccion.Rows.Clear()
        Dim articulo As cls_articulo_ = txt_AProducir.Tag
        If Not IsNothing(articulo.articulocomposicionarticulo_) Then
            If Not IsNothing(articulo.articulocomposicionarticulo_.Items) Then
                For Each ACA As cls_articulocomposicionarticulo_ In articulo.articulocomposicionarticulo_.Items
                    'Dim item As New CustomListItem
                    'item.objeto = ACA
                    'item.text = ACA.ToString
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Material"
                    dtt_row("Nombre") = ACA.articulo.ToString
                    dtt_row("Cantidad") = ACA.cantidad
                    dtt_row("Valor") = ACA.valor
                    dtt_row("Total") = ACA.cantidad * ACA.valor
                    dtt_row("objeto") = ACA
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        If Not IsNothing(articulo.articulocomposicionproceso_) Then
            If Not IsNothing(articulo.articulocomposicionproceso_.Items) Then
                For Each ACP As cls_articulocomposicionproceso_ In articulo.articulocomposicionproceso_.Items
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Procesos Personales"
                    dtt_row("Nombre") = ACP.proceso.ToString
                    dtt_row("Cantidad") = ACP.cantidad
                    dtt_row("Valor") = ACP.valor
                    dtt_row("Total") = ACP.cantidad * ACP.valor
                    dtt_row("objeto") = ACP
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        If Not IsNothing(articulo.articulocomposicionmaquinariatarea_) Then
            If Not IsNothing(articulo.articulocomposicionmaquinariatarea_.Items) Then
                For Each ACM As cls_articulocomposicionmaquinariatarea_ In articulo.articulocomposicionmaquinariatarea_.Items
                    Dim dtt_row As DataRow = dtt_detalleproduccion.NewRow
                    dtt_row("Tipo") = "Procesos Maquinaria"
                    dtt_row("Nombre") = ACM.maquinariatarea.ToString
                    dtt_row("Cantidad") = ACM.cantidad
                    dtt_row("Valor") = ACM.valor
                    dtt_row("Total") = ACM.cantidad * ACM.valor
                    dtt_row("objeto") = ACM
                    dtt_detalleproduccion.Rows.Add(dtt_row)
                Next
            End If
        End If
        gdv_detalle.Columns("Total").SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
        gdv_detalle.Columns("Total").SummaryItem.DisplayFormat = "Costo Total: {0}"

    End Sub

    Private Sub cbo_TipoProduccion_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoProduccion.SelectedIndexChanged
        txt_AProducir.Text = ""
        txt_AProducir.Tag = Nothing
        lbl_AProducir.Text = cbo_TipoProduccion.Text
    End Sub

#Region "Resultado Produccion"

    Private Sub tsb_ArticuloNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionresultadoNuevo.Click
        Dim ABMproduccionresultado As New xtf_ABMproduccionresultado
        If ABMproduccionresultado.ShowDialog = Windows.Forms.DialogResult.OK Then
            gdv_produccionresultado_.BeginDataUpdate()
            Dim Item As DataRow = dtt_produccionresultado_.NewRow
            Item("Articulo") = ABMproduccionresultado.obj_produccionresultado.articulo.ToString
            Item("Cantidad") = ABMproduccionresultado.obj_produccionresultado.unidaddetalle.CCantCargar(ABMproduccionresultado.obj_produccionresultado.cantidad)
            Item("Unidad") = ABMproduccionresultado.obj_produccionresultado.unidaddetalle.ToString
            Item("objeto") = ABMproduccionresultado.obj_produccionresultado
            dtt_produccionresultado_.Rows.Add(Item)
            gdv_produccionresultado_.EndDataUpdate()
        End If
    End Sub

    Private Sub gridView1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles gdv_produccionresultado_.DoubleClick
        Dim view As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
        Dim pt As Point = view.GridControl.PointToClient(Control.MousePosition)
        DoRowDoubleClick(view, pt)
    End Sub

    Public Overridable Sub DoRowDoubleClick(ByVal view As DevExpress.XtraGrid.Views.Grid.GridView, ByVal pt As Point)
        Dim info As DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo = view.CalcHitInfo(pt)
        If info.InRow OrElse info.InRowCell Then
            Dim colCaption As String
            If info.Column Is Nothing Then
                colCaption = "N/A"
            Else
                colCaption = info.Column.GetCaption()
            End If
            tsb_produccionresultadoModificar.PerformClick()
        End If
    End Sub

    Private Sub tsb_ArticulosModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionresultadoModificar.Click
        If gdv_produccionresultado_.SelectedRowsCount > 0 Then
            Dim ABMproduccionresultado As New xtf_ABMproduccionresultado
            ABMproduccionresultado.Modificar(gdv_produccionresultado_.GetDataRow(gdv_produccionresultado_.GetSelectedRows(0))("objeto"))
            If ABMproduccionresultado.ShowDialog = Windows.Forms.DialogResult.OK Then
                gdv_produccionresultado_.BeginDataUpdate()
                Dim Item As DataRow = gdv_produccionresultado_.GetDataRow(gdv_produccionresultado_.GetSelectedRows(0))
                Item("Articulo") = ABMproduccionresultado.obj_produccionresultado.articulo.ToString
                Item("Cantidad") = ABMproduccionresultado.obj_produccionresultado.unidaddetalle.CCantCargar(ABMproduccionresultado.obj_produccionresultado.cantidad)
                Item("Unidad") = ABMproduccionresultado.obj_produccionresultado.unidaddetalle.ToString
                Item("Objeto") = ABMproduccionresultado.obj_produccionresultado
                gdv_produccionresultado_.EndDataUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_ArticuloEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionresultadoEliminar.Click
        If gdv_produccionresultado_.SelectedRowsCount > 0 Then
            gdv_produccionresultado_.BeginDataUpdate()
            gdv_produccionresultado_.Tag.add(gdv_produccionresultado_.GetDataRow(gdv_produccionresultado_.GetSelectedRows(0))("Objeto"))
            dtt_produccionresultado_.Rows.Remove(gdv_produccionresultado_.GetDataRow(gdv_produccionresultado_.GetSelectedRows(0)))
            gdv_produccionresultado_.EndDataUpdate()
        End If
    End Sub

    Private Sub tsb_articulosBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionresultadoBuscar.Click
        Dim buscar As New xtf_buscardor(gdv_produccionresultado_.DataSource, "Produccion Resultados", {"idproveedor", "Objeto"})
        If buscar.ShowDialog = Windows.Forms.DialogResult.OK Then
            'gdv_produccionresultado_.SetFocusedValue((buscar.obj_resultado))
            gdv_produccionresultado_.FocusedRowHandle = (gdv_produccionresultado_.GetRowHandle(dtt_produccionresultado_.Rows.IndexOf(buscar.obj_resultado)))
            'gdv_produccionresultado_.SelectRow(gdv_produccionresultado_.GetRowHandle(42))

        End If
    End Sub
#End Region

#Region "Entrega Produccion"

    Private Sub tsb_produccionentregaNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionentregaNuevo.Click
        Dim ABMproduccionentrega As New xtf_ABMproduccionentrega
        If ABMproduccionentrega.ShowDialog = Windows.Forms.DialogResult.OK Then
            gdv_produccionentrega_.BeginDataUpdate()
            Dim Item As DataRow = dtt_produccionentrega_.NewRow
            Item("Fecha") = ABMproduccionentrega.obj_produccionentrega.fecha
            Item("Articulo") = ABMproduccionentrega.obj_produccionentrega.articulo.ToString
            Item("Cantidad") = ABMproduccionentrega.obj_produccionentrega.unidaddetalle.CCantCargar(ABMproduccionentrega.obj_produccionentrega.cantidad)
            Item("Unidad") = ABMproduccionentrega.obj_produccionentrega.unidaddetalle.ToString
            Item("objeto") = ABMproduccionentrega.obj_produccionentrega
            dtt_produccionentrega_.Rows.Add(Item)
            gdv_produccionentrega_.EndDataUpdate()
        End If
    End Sub

    Private Sub gdv_produccionentrega__DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles gdv_produccionentrega_.DoubleClick
        Dim view As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
        Dim pt As Point = view.GridControl.PointToClient(Control.MousePosition)
        gdv_produccionentrega_DoRowDoubleClick(view, pt)
    End Sub

    Public Overridable Sub gdv_produccionentrega_DoRowDoubleClick(ByVal view As DevExpress.XtraGrid.Views.Grid.GridView, ByVal pt As Point)
        Dim info As DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo = view.CalcHitInfo(pt)
        If info.InRow OrElse info.InRowCell Then
            Dim colCaption As String
            If info.Column Is Nothing Then
                colCaption = "N/A"
            Else
                colCaption = info.Column.GetCaption()
            End If
            tsb_produccionentregaModificar.PerformClick()
        End If
    End Sub

    Private Sub tsb_produccionentregaModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionentregaModificar.Click
        If gdv_produccionentrega_.SelectedRowsCount > 0 Then
            Dim ABMproduccionentrega As New xtf_ABMproduccionentrega
            ABMproduccionentrega.Modificar(gdv_produccionentrega_.GetDataRow(gdv_produccionentrega_.GetSelectedRows(0))("objeto"))
            If ABMproduccionentrega.ShowDialog = Windows.Forms.DialogResult.OK Then
                gdv_produccionentrega_.BeginDataUpdate()
                Dim Item As DataRow = gdv_produccionentrega_.GetDataRow(gdv_produccionentrega_.GetSelectedRows(0))
                Item("Fecha") = ABMproduccionentrega.obj_produccionentrega.fecha
                Item("Articulo") = ABMproduccionentrega.obj_produccionentrega.articulo.ToString
                Item("Cantidad") = ABMproduccionentrega.obj_produccionentrega.unidaddetalle.CCantCargar(ABMproduccionentrega.obj_produccionentrega.cantidad)
                Item("Unidad") = ABMproduccionentrega.obj_produccionentrega.unidaddetalle.ToString
                Item("Objeto") = ABMproduccionentrega.obj_produccionentrega
                gdv_produccionentrega_.EndDataUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_produccionentregaEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionentregaEliminar.Click
        If gdv_produccionentrega_.SelectedRowsCount > 0 Then
            gdv_produccionentrega_.BeginDataUpdate()
            gdv_produccionentrega_.Tag.add(gdv_produccionentrega_.GetDataRow(gdv_produccionentrega_.GetSelectedRows(0))("Objeto"))
            dtt_produccionentrega_.Rows.Remove(gdv_produccionentrega_.GetDataRow(gdv_produccionentrega_.GetSelectedRows(0)))
            gdv_produccionentrega_.EndDataUpdate()
        End If
    End Sub

    Private Sub tsb_produccionentregaBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionentregaBuscar.Click
        Dim buscar As New xtf_buscardor(gdv_produccionentrega_.DataSource, "Produccion Resultados", {"idproveedor", "Objeto"})
        If buscar.ShowDialog = Windows.Forms.DialogResult.OK Then
            'gdv_produccionentrega_.SetFocusedValue((buscar.obj_resultado))
            gdv_produccionentrega_.FocusedRowHandle = (gdv_produccionentrega_.GetRowHandle(dtt_produccionentrega_.Rows.IndexOf(buscar.obj_resultado)))
            'gdv_produccionentrega_.SelectRow(gdv_produccionentrega_.GetRowHandle(42))

        End If
    End Sub
#End Region

#Region "Recepcion Produccion"

    Private Sub tsb_produccionrecepcionNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionrecepcionNuevo.Click
        Dim ABMproduccionrecepcion As New xtf_ABMproduccionrecepcion
        If ABMproduccionrecepcion.ShowDialog = Windows.Forms.DialogResult.OK Then
            gdv_produccionrecepcion_.BeginDataUpdate()
            Dim Item As DataRow = dtt_produccionrecepcion_.NewRow
            Item("Fecha") = ABMproduccionrecepcion.obj_produccionrecepcion.fecha
            Item("Articulo") = ABMproduccionrecepcion.obj_produccionrecepcion.articulo.ToString
            Item("Cantidad") = ABMproduccionrecepcion.obj_produccionrecepcion.unidaddetalle.CCantCargar(ABMproduccionrecepcion.obj_produccionrecepcion.cantidad)
            Item("Unidad") = ABMproduccionrecepcion.obj_produccionrecepcion.unidaddetalle.ToString
            Item("objeto") = ABMproduccionrecepcion.obj_produccionrecepcion
            dtt_produccionrecepcion_.Rows.Add(Item)
            gdv_produccionrecepcion_.EndDataUpdate()
        End If
    End Sub

    Private Sub gdv_produccionrecepcion__DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles gdv_produccionrecepcion_.DoubleClick
        Dim view As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
        Dim pt As Point = view.GridControl.PointToClient(Control.MousePosition)
        gdv_produccionrecepcion_DoRowDoubleClick(view, pt)
    End Sub

    Public Overridable Sub gdv_produccionrecepcion_DoRowDoubleClick(ByVal view As DevExpress.XtraGrid.Views.Grid.GridView, ByVal pt As Point)
        Dim info As DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo = view.CalcHitInfo(pt)
        If info.InRow OrElse info.InRowCell Then
            Dim colCaption As String
            If info.Column Is Nothing Then
                colCaption = "N/A"
            Else
                colCaption = info.Column.GetCaption()
            End If
            tsb_produccionrecepcionModificar.PerformClick()
        End If
    End Sub

    Private Sub tsb_produccionrecepcionModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionrecepcionModificar.Click
        If gdv_produccionrecepcion_.SelectedRowsCount > 0 Then
            Dim ABMproduccionrecepcion As New xtf_ABMproduccionrecepcion
            ABMproduccionrecepcion.Modificar(gdv_produccionrecepcion_.GetDataRow(gdv_produccionrecepcion_.GetSelectedRows(0))("objeto"))
            If ABMproduccionrecepcion.ShowDialog = Windows.Forms.DialogResult.OK Then
                gdv_produccionrecepcion_.BeginDataUpdate()
                Dim Item As DataRow = gdv_produccionrecepcion_.GetDataRow(gdv_produccionrecepcion_.GetSelectedRows(0))
                Item("Fecha") = ABMproduccionrecepcion.obj_produccionrecepcion.fecha
                Item("Articulo") = ABMproduccionrecepcion.obj_produccionrecepcion.articulo.ToString
                Item("Cantidad") = ABMproduccionrecepcion.obj_produccionrecepcion.unidaddetalle.CCantCargar(ABMproduccionrecepcion.obj_produccionrecepcion.cantidad)
                Item("Unidad") = ABMproduccionrecepcion.obj_produccionrecepcion.unidaddetalle.ToString
                Item("Objeto") = ABMproduccionrecepcion.obj_produccionrecepcion
                gdv_produccionrecepcion_.EndDataUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_produccionrecepcionEliminarEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionrecepcionEliminar.Click
        If gdv_produccionrecepcion_.SelectedRowsCount > 0 Then
            gdv_produccionrecepcion_.BeginDataUpdate()
            gdv_produccionrecepcion_.Tag.add(gdv_produccionrecepcion_.GetDataRow(gdv_produccionrecepcion_.GetSelectedRows(0))("Objeto"))
            dtt_produccionrecepcion_.Rows.Remove(gdv_produccionrecepcion_.GetDataRow(gdv_produccionrecepcion_.GetSelectedRows(0)))
            gdv_produccionrecepcion_.EndDataUpdate()
        End If
    End Sub

    Private Sub tsb_produccionrecepcionBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_produccionrecepcionBuscar.Click
        Dim buscar As New xtf_buscardor(gdv_produccionrecepcion_.DataSource, "Produccion Resultados", {"idproveedor", "Objeto"})
        If buscar.ShowDialog = Windows.Forms.DialogResult.OK Then
            'gdv_produccionrecepcion_.SetFocusedValue((buscar.obj_resultado))
            gdv_produccionrecepcion_.FocusedRowHandle = (gdv_produccionrecepcion_.GetRowHandle(dtt_produccionrecepcion_.Rows.IndexOf(buscar.obj_resultado)))
            'gdv_produccionrecepcion_.SelectRow(gdv_produccionrecepcion_.GetRowHandle(42))

        End If
    End Sub
#End Region

#Region "Detalle"

    Private Sub txt_PDarticuloresultadoProveedor_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_PDarticuloresultadoProveedor.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Dim Objeto_ As Object

        Objeto_ = New cls_proveedor_
        If Objeto_.CargarXidarticulo(CType((gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")), cls_PDarticulo_).idarticulo, True) Then
            buscar = New xtf_buscardor("Proveedores", Objeto_, {"razonsocial|Razon Social", "codigo|Codigo", "nombrefantasia|Nombre de Fantasia"})
            If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
                txt_PDarticuloresultadoProveedor.Tag = buscar.obj_resultado
                txt_PDarticuloresultadoProveedor.Text = buscar.obj_resultado.ToString
                txt_PDarticuloresultadoValor.Text = CType(buscar.obj_resultado, cls_proveedor_).costo(CType((gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")), cls_PDarticulo_).idarticulo)
            End If
        End If
    End Sub

    Private Sub txt_PDmaquinariatarearesultadoMMaquinaria_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_PDmaquinariatarearesultadoMaquinaria.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Dim Objeto_ As cls_maquinaria_

        Objeto_ = New cls_maquinaria_
        Objeto_.CargarXidmaquinariatarea((gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")).idmaquinariatarea)
        buscar = New xtf_buscardor("Maquinarias", Objeto_, {"nombre|Nombre", "descripcion|Descripcion"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_PDmaquinariatarearesultadoMaquinaria.Tag = buscar.obj_resultado
            txt_PDmaquinariatarearesultadoMaquinaria.Text = buscar.obj_resultado.ToString
            txt_PDmaquinariatarearesultadoValor.Text = CType(buscar.obj_resultado, cls_maquinaria_).valorhora '+ CType(buscar.obj_resultado, cls_maquinaria_).valormantenimiento
            txt_PDmaquinariatarearesultadoValorMantenimiento.Text = CType(buscar.obj_resultado, cls_maquinaria_).valormantenimiento
        End If
    End Sub

    Private Sub txt_PDprocesoresultadoPersonal_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_PDprocesoresultadoPersonal.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Dim Objeto_ As New cls_personal_

        Objeto_.CargarXidproceso((gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")).idproceso)

        buscar = New xtf_buscardor("Personal", Objeto_, {"apellidonombre|Apellido y Nombre", "legajo|Legajo"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_PDprocesoresultadoPersonal.Tag = buscar.obj_resultado
            txt_PDprocesoresultadoPersonal.Text = buscar.obj_resultado.ToString
            txt_PDprocesoresultadoValor.Text = CType(buscar.obj_resultado, cls_personal_).valorhora
        End If
    End Sub

#End Region


#Region "PDArticuloResultado"
    Private Sub txt_PDarticuloresultadoProveedor_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_PDarticuloresultadoProveedor.TextChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(txt_PDarticuloresultadoProveedor.Tag) Then
                CType(lcg_PDarticuloresultado.Tag, cls_PDarticuloresultado_).idproveedor = CType(txt_PDarticuloresultadoProveedor.Tag, cls_proveedor_).idproveedor
                txt_PDarticuloresultadoTotal.Text = txt_PDarticuloresultadoCantidad.Text * txt_PDarticuloresultadoValor.Text
            End If
        End If
    End Sub
    Private Sub txt_PDarticuloresultadoCantidad_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDarticuloresultadoCantidad.EditValueChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(lcg_PDarticuloresultado.Tag) Then
                CType(lcg_PDarticuloresultado.Tag, cls_PDarticuloresultado_).cantidad = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CCantGuardar(txt_PDarticuloresultadoCantidad.Text)
                txt_PDarticuloresultadoTotal.Text = txt_PDarticuloresultadoCantidad.Text * txt_PDarticuloresultadoValor.Text
                CType(lcg_PDarticuloresultado.Tag, cls_PDarticuloresultado_).valor = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValGuardar(txt_PDarticuloresultadoValor.Text)
            End If
        End If
    End Sub

    Private Sub txt_PDarticuloresultadoValor_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDarticuloresultadoValor.EditValueChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(lcg_PDarticuloresultado.Tag) Then
                CType(lcg_PDarticuloresultado.Tag, cls_PDarticuloresultado_).valor = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValGuardar(txt_PDarticuloresultadoValor.Text)
                txt_PDarticuloresultadoTotal.Text = txt_PDarticuloresultadoCantidad.Text * txt_PDarticuloresultadoValor.Text
            End If
        End If

    End Sub

    Private Sub cbo_PDarticuloresultadoUnidaddetalle_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_PDarticuloresultadoUnidaddetalle.SelectedIndexChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(lcg_PDarticuloresultado.Tag) Then
                If Not IsNothing(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem) Then
                    CType(lcg_PDarticuloresultado.Tag, cls_PDarticuloresultado_).idunidaddetalle = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).idunidaddetalle
                    txt_PDarticuloresultadoValor.Text = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValCargar((gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")).valor)
                    txt_PDarticuloresultadoCantidad_EditValueChanged(Nothing, Nothing)
                End If
            End If
        End If

    End Sub
#End Region

#Region "PDmaquinariatarearesultadoMaquinaria"
    Private Sub txt_PDmaquinariatarearesultadoMMaquinaria_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_PDmaquinariatarearesultadoMaquinaria.TextChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(txt_PDmaquinariatarearesultadoMaquinaria.Tag) Then
                CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).idmaquinaria = CType(txt_PDmaquinariatarearesultadoMaquinaria.Tag, cls_maquinaria_).idmaquinaria
            End If
        End If
    End Sub

    Private Sub txt_PDmaquinariatarearesultadoMCantidad_EditValueChanged() Handles txt_PDmaquinariatarearesultadoCantidad.ValueChange
        If lcg_detalle.Enabled Then
            If Not IsNothing(lcg_PDmaquinariatarearesultado.Tag) Then
                CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).tiempo = txt_PDmaquinariatarearesultadoCantidad.Value
                txt_PDmaquinariatarearesultadoTotal.Text = Math.Round(CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).tiempo * ((CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valor + CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valormantenimiento) / 60), int_cantdecimales)
            End If
        End If
    End Sub

    Private Sub txt_PDmaquinariatarearesultadoMValor_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDmaquinariatarearesultadoValor.EditValueChanged
        If lcg_detalle.Enabled Then
            CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valor = txt_PDmaquinariatarearesultadoValor.Text
            txt_PDmaquinariatarearesultadoTotal.Text = Math.Round(CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).tiempo * ((CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valor + CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valormantenimiento) / 60), int_cantdecimales)
        End If
    End Sub

    Private Sub txt_PDmaquinariatarearesultadoMValorMantenimiento_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDmaquinariatarearesultadoValorMantenimiento.EditValueChanged
        If lcg_detalle.Enabled Then
            CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valormantenimiento = txt_PDmaquinariatarearesultadoValorMantenimiento.Text
            txt_PDmaquinariatarearesultadoTotal.Text = Math.Round(CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).tiempo * ((CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valor + CType(lcg_PDmaquinariatarearesultado.Tag, cls_PDmaquinariatarearesultado_).valormantenimiento) / 60), int_cantdecimales)
        End If
    End Sub
#End Region

#Region "PDmaquinariatarearesultadoPPersonal"
    Private Sub txt_PDprocesoresultadoPersonal_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_PDprocesoresultadoPersonal.TextChanged
        If lcg_detalle.Enabled Then
            If Not IsNothing(txt_PDprocesoresultadoPersonal.Tag) Then
                CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).idpersonal = CType(txt_PDprocesoresultadoPersonal.Tag, cls_personal_).idpersonal
            End If
        End If
    End Sub

    Private Sub txt_PDprocesoresultadoCantidad_EditValueChanged() Handles txt_PDprocesoresultadoCantidad.ValueChange
        If lcg_detalle.Enabled Then
            If Not IsNothing(lcg_PDprocesoresultado.Tag) Then
                CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).tiempo = txt_PDprocesoresultadoCantidad.Value
                txt_PDprocesoresultadoTotal.Text = CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).tiempo * (CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).valor / 60)
            End If
        End If
    End Sub

    Private Sub txt_PDprocesoresultadoValor_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDprocesoresultadoValor.EditValueChanged
        If lcg_detalle.Enabled Then
            CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).valor = txt_PDprocesoresultadoValor.Text
            txt_PDprocesoresultadoTotal.Text = CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).tiempo * (CType(lcg_PDprocesoresultado.Tag, cls_PDprocesoresultado_).valor / 60)
        End If
    End Sub
#End Region

    Private Sub btn_Confirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Confirmar.Click
        If btn_Confirmar.Text = "Cerrar producción" Then
            If ErrManagerShow("002002", Me) = Windows.Forms.DialogResult.Yes Then
                If txt_producidoCantidad.EditValue = 0 Then
                    If ErrManagerShow("002005", Me) = Windows.Forms.DialogResult.No Then
                        Exit Sub
                    End If
                End If
                If obj_Produccion.externa Then
                    btn_Guardar_Click(Nothing, Nothing)
                    cbo_Estado.SelectedIndex = cls_produccion_.enu_estado.Cerrada
                    CerrarProduccionExterna()
                    btn_Guardar_Click(Nothing, Nothing)
                Else
                    cbo_Estado.SelectedIndex = cls_produccion_.enu_estado.Cerrada
                    btn_Guardar_Click(Nothing, Nothing)
                End If
            End If
        ElseIf btn_Confirmar.Text = "Confirmar producción" Then
            If ErrManagerShow("002001", Me) = Windows.Forms.DialogResult.Yes Then
                cbo_Estado.SelectedIndex = cls_produccion_.enu_estado.Incompleta
                btn_Guardar_Click(Nothing, Nothing)
            End If
        ElseIf btn_Confirmar.Text = "Cancelar producción" Then
            If ErrManagerShow("002003", Me) = Windows.Forms.DialogResult.Yes Then
                cbo_Estado.SelectedIndex = cls_produccion_.enu_estado.Cancelada
                btn_Guardar_Click(Nothing, Nothing)
            End If
        ElseIf btn_Confirmar.Text = "Reabrir producción" Then
            If ErrManagerShow("002004", Me) = Windows.Forms.DialogResult.Yes Then
                cbo_Estado.SelectedIndex = cls_produccion_.enu_estado.Incompleta
                btn_Guardar_Click(Nothing, Nothing)
            End If
        End If
    End Sub


    Private Sub CerrarProduccionExterna()
        'PDArticulos
        If Not IsNothing(obj_Produccion.PDarticulo_) Then
            If Not IsNothing(obj_Produccion.PDarticulo_.Items) Then
                For Each PDA As cls_PDarticulo_ In obj_Produccion.PDarticulo_.Items
                    Dim PDACantidad As Decimal = 0
                    Dim PDAR As New cls_PDarticuloresultado_
                    If Not IsNothing(obj_Produccion.produccionentrega_) Then
                        If Not IsNothing(obj_Produccion.produccionentrega_.Items) Then
                            For Each PE As cls_produccionentrega_ In obj_Produccion.produccionentrega_.Items
                                If PE.idarticulo = PDA.idarticulo Then
                                    PDACantidad += PE.cantidad
                                    PDAR.idunidaddetalle = PE.idunidaddetalle
                                End If
                            Next
                        End If
                    End If
                    If Not IsNothing(PDA.PDarticuloresultado_) Then
                        For Each PDARdel As cls_PDarticuloresultado_ In PDA.PDarticuloresultado_.Items
                            PDARdel.Eliminar(PDARdel.idPDarticuloresultado)
                        Next
                    End If
                    PDA.PDarticuloresultado_ = Nothing
                    If IsNothing(PDA.PDarticuloresultado_) Then
                        PDA.PDarticuloresultado_ = New cls_PDarticuloresultado_
                    End If
                    If IsNothing(PDA.PDarticuloresultado_.Items) Then
                        PDA.PDarticuloresultado_.Items = New Collections.Generic.List(Of cls_PDarticuloresultado_)
                    End If
                    PDAR.idPDarticulo = PDA.idPDarticulo
                    PDAR.cantidad = PDACantidad
                    PDA.PDarticuloresultado_.Items.Add(PDAR)
                Next
            End If
        End If

        Dim PDCantidad As Decimal = 0
        If Not IsNothing(obj_Produccion.produccionrecepcion_) Then
            If Not IsNothing(obj_Produccion.produccionrecepcion_.Items) Then
                If IsNothing(obj_Produccion.produccionresultado_) Then
                    obj_Produccion.produccionresultado_ = New cls_produccionresultado_
                End If
                If IsNothing(obj_Produccion.produccionresultado_.Items) Then
                    obj_Produccion.produccionresultado_.Items = New Collections.Generic.List(Of cls_produccionresultado_)
                End If
                If Not IsNothing(obj_Produccion.produccionrecepcion_) Then
                    If Not IsNothing(obj_Produccion.produccionrecepcion_.Items) Then
                        For Each PDR As cls_produccionrecepcion_ In obj_Produccion.produccionrecepcion_.Items
                            Dim PR As New cls_produccionresultado_
                            PR.idarticulo = PDR.idarticulo
                            PR.idunidaddetalle = PDR.idunidaddetalle
                            PR.cantidad = PDR.cantidad
                            obj_Produccion.produccionresultado_.Items.Add(PR)
                            If PDR.idarticulo = obj_Produccion.idarticulo Then
                                PDCantidad += PDR.cantidad
                            End If
                        Next
                    End If
                End If
            End If
        End If

        If Not IsNothing(obj_Produccion.PDproceso_) Then
            If Not IsNothing(obj_Produccion.PDproceso_.Items) Then
                For Each PDP As cls_PDproceso_ In obj_Produccion.PDproceso_.Items
                    If Not IsNothing(PDP.PDprocesoresultado_) Then
                        For Each PDPRdel As cls_PDprocesoresultado_ In PDP.PDprocesoresultado_.Items
                            PDPRdel.Eliminar(PDPRdel.idPDprocesoresultado)
                        Next
                    End If
                    PDP.PDprocesoresultado_ = Nothing
                    If IsNothing(PDP.PDprocesoresultado_) Then
                        PDP.PDprocesoresultado_ = New cls_PDprocesoresultado_
                    End If
                    If IsNothing(PDP.PDprocesoresultado_.Items) Then
                        PDP.PDprocesoresultado_.Items = New Collections.Generic.List(Of cls_PDprocesoresultado_)
                    End If
                    Dim PDPR As New cls_PDprocesoresultado_
                    PDPR.idPDproceso = PDP.idPDproceso
                    PDPR.idpersonal = obj_Produccion.produccionexterna.idpersonal
                    PDPR.tiempo = PDCantidad
                    PDP.PDprocesoresultado_.Items.Add(PDPR)
                Next
            End If
        End If
    End Sub

    Private Sub gdv_detalleresultado_FocusedRowChanged(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles gdv_detalleresultado.FocusedRowChanged
        If gdv_detalleresultado.SelectedRowsCount > 0 Then
            lac_general.BeginUpdate()

            Select Case (gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto")).GetType.ToString
                Case GetType(cls_PDarticulo_).ToString
                    lcg_PDmaquinariatarearesultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                    lcg_PDprocesoresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                    lcg_PDarticuloresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                    'lcg_PDarticuloresultado.Tag = Nothing
                    'txt_PDarticuloresultadoValor.Text = 0
                    'txt_PDarticuloresultadoCantidad.Text = 0

                    Dim PDarticulo As cls_PDarticulo_ = (gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto"))
                    Dim PDarticuloResultado As cls_PDarticuloresultado_
                    'PDarticulo.PDarticuloresultado_ = Nothing
                    If IsNothing(PDarticulo.PDarticuloresultado_) Then
                        PDarticulo.PDarticuloresultado_ = New cls_PDarticuloresultado_
                    End If
                    If IsNothing(PDarticulo.PDarticuloresultado_.Items) Then
                        PDarticulo.PDarticuloresultado_.Items = New Collections.Generic.List(Of cls_PDarticuloresultado_)
                        PDarticulo.PDarticuloresultado_.Items.Add(New cls_PDarticuloresultado_)
                    End If
                    PDarticuloResultado = PDarticulo.PDarticuloresultado_.Items(0)
                    lcg_PDarticuloresultado.Tag = PDarticuloResultado

                    Dim TempCant As Decimal = PDarticuloResultado.cantidad

                    cbo_PDarticuloresultadoUnidaddetalle.Properties.Items.Clear()
                    cbo_PDarticuloresultadoUnidaddetalle.SelectedItem = Nothing
                    For Each unidaddetealle As cls_unidaddetalle_ In PDarticulo.articulo.unidad.unidaddetalle_.Items
                        cbo_PDarticuloresultadoUnidaddetalle.Properties.Items.Add(unidaddetealle)
                        If unidaddetealle.idunidaddetalle = PDarticuloResultado.idunidaddetalle Then
                            cbo_PDarticuloresultadoUnidaddetalle.SelectedItem = unidaddetealle
                        End If
                    Next


                    cbo_PDarticuloresultadoUnidaddetalle.Enabled = True
                    If IsNothing(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem) Then
                        cbo_PDarticuloresultadoUnidaddetalle.SelectedIndex = 0
                        PDarticuloResultado.idunidaddetalle = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).idunidaddetalle
                    End If
                    txt_PDarticuloresultadoCantidad.Text = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CCantCargar(TempCant)

                    If PDarticuloResultado.valor <> 0 Then
                        txt_PDarticuloresultadoValor.Text = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValCargar(PDarticuloResultado.valor)
                    End If

                    cbo_PDarticuloresultadoTipoSegunProveedor.SelectedIndex = PDarticulo.tiposegunproveedor
                    If PDarticulo.tiposegunproveedor = cls_articulocomposicionarticulo_.enu_segunvalor.proveedor Then
                        If Not IsNothing(PDarticulo.proveedor) Then
                            txt_PDarticuloresultadoProveedor.Tag = PDarticulo.proveedor
                            txt_PDarticuloresultadoProveedor.Text = PDarticulo.proveedor.ToString
                        End If
                    Else
                        txt_PDarticuloresultadoProveedor.Tag = Nothing
                        txt_PDarticuloresultadoProveedor.Text = ""
                    End If
                    If PDarticulo.tiposegunproveedor = cls_articulocomposicionarticulo_.enu_segunvalor.fijo Then
                        txt_PDarticuloresultadoValor.Text = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValCargar(PDarticulo.valor)
                    Else
                        If PDarticuloResultado.valor = 0 Then
                            txt_PDarticuloresultadoValor.Text = CType(cbo_PDarticuloresultadoUnidaddetalle.SelectedItem, cls_unidaddetalle_).CValCargar(PDarticulo.articulo.costo(PDarticulo.tiposegunproveedor, PDarticulo.idproveedor))
                        End If
                    End If
                    txt_PDarticuloresultadoTotal.Text = txt_PDarticuloresultadoCantidad.Text * txt_PDarticuloresultadoValor.Text

                Case GetType(cls_PDmaquinariatarea_).ToString
                    lcg_PDmaquinariatarearesultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                    lcg_PDprocesoresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                    lcg_PDarticuloresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never

                    Dim PDmaquinariatarea As cls_PDmaquinariatarea_ = (gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto"))
                    If IsNothing(PDmaquinariatarea.PDmaquinariatarearesultado_) Then
                        PDmaquinariatarea.PDmaquinariatarearesultado_ = New cls_PDmaquinariatarearesultado_
                    End If
                    If IsNothing(PDmaquinariatarea.PDmaquinariatarearesultado_.Items) Then
                        PDmaquinariatarea.PDmaquinariatarearesultado_.Items = New Collections.Generic.List(Of cls_PDmaquinariatarearesultado_)
                        PDmaquinariatarea.PDmaquinariatarearesultado_.Items.Add(New cls_PDmaquinariatarearesultado_)
                    End If
                    lcg_PDmaquinariatarearesultado.Tag = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0)
                    If Not IsNothing(PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).maquinaria) Then
                        txt_PDmaquinariatarearesultadoMaquinaria.Tag = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).maquinaria
                        txt_PDmaquinariatarearesultadoMaquinaria.Text = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).maquinaria.ToString
                    Else
                        txt_PDmaquinariatarearesultadoMaquinaria.Tag = Nothing
                        txt_PDmaquinariatarearesultadoMaquinaria.Text = ""
                    End If

                    txt_PDmaquinariatarearesultadoCantidad.Value = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).tiempo

                    txt_PDmaquinariatarearesultadoValor.Text = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).valor
                    txt_PDmaquinariatarearesultadoValorMantenimiento.Text = PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).valormantenimiento

                    txt_PDmaquinariatarearesultadoTotal.Text = Math.Round(txt_PDmaquinariatarearesultadoCantidad.Value * ((PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).valormantenimiento + PDmaquinariatarea.PDmaquinariatarearesultado_.Items(0).valor) / 60), int_cantdecimales)
                    'lcg_detalle.Add(lcg_PDmaquinariatarearesultado)


                Case GetType(cls_PDproceso_).ToString
                    lcg_PDprocesoresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                    lcg_PDmaquinariatarearesultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                    lcg_PDarticuloresultado.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                    Dim PDproceso As cls_PDproceso_ = (gdv_detalleresultado.GetDataRow(gdv_detalleresultado.GetSelectedRows(0))("objeto"))
                    If IsNothing(PDproceso.PDprocesoresultado_) Then
                        PDproceso.PDprocesoresultado_ = New cls_PDprocesoresultado_
                    End If
                    If IsNothing(PDproceso.PDprocesoresultado_.Items) Then
                        PDproceso.PDprocesoresultado_.Items = New Collections.Generic.List(Of cls_PDprocesoresultado_)
                        PDproceso.PDprocesoresultado_.Items.Add(New cls_PDprocesoresultado_)
                    End If
                    lcg_PDprocesoresultado.Tag = PDproceso.PDprocesoresultado_.Items(0)
                    cbo_PDprocesoresultadoTipoSegunValor.SelectedIndex = PDproceso.tiposegunvalor
                    If Not IsNothing(PDproceso.PDprocesoresultado_.Items(0).personal) Then
                        txt_PDprocesoresultadoPersonal.Tag = PDproceso.PDprocesoresultado_.Items(0).personal
                        txt_PDprocesoresultadoPersonal.Text = PDproceso.PDprocesoresultado_.Items(0).personal.ToString
                    Else
                        txt_PDprocesoresultadoPersonal.Tag = Nothing
                        txt_PDprocesoresultadoPersonal.Text = ""
                    End If
                    txt_PDprocesoresultadoCantidad.Value = PDproceso.PDprocesoresultado_.Items(0).tiempo
                    txt_PDprocesoresultadoValor.Text = PDproceso.PDprocesoresultado_.Items(0).valor

                    txt_PDprocesoresultadoTotal.Text = Math.Round(PDproceso.PDprocesoresultado_.Items(0).tiempo * (PDproceso.PDprocesoresultado_.Items(0).valor / 60), int_cantdecimales)

                    'lcg_detalle.Add(lcg_PDprocesoresultado)
            End Select
            lac_general.EndUpdate()
        End If
    End Sub

    Private Sub cargarResumen()
        lcg_resumen.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
        txt_resumenvalorproduccion.Text = 0
        lcg_resumenMateriales.Text = "Materiales"
        lcg_resumenMaquinaria.Text = "Maquinaria"
        lcg_resumenMaquinariaMantenimiento.Text = "Mantenimiento"
        lcg_resumenEmpleados.Text = "Empleados"

        Dim moneda As New cls_moneda_
        moneda.MonedaLocal()
        'Prepara grid y datasource resumen----------------------------------------------------
        Dim dtt_resumenPDarticulo_ As New DataTable
        Dim Total As Decimal = 0
        dtt_resumenPDarticulo_.Columns.Add("Articulo", GetType(String))
        dtt_resumenPDarticulo_.Columns.Add("Proveedor", GetType(String))
        dtt_resumenPDarticulo_.Columns.Add("Cantidad", GetType(String))
        dtt_resumenPDarticulo_.Columns.Add("Unidad", GetType(String))
        dtt_resumenPDarticulo_.Columns.Add("Valor", GetType(Decimal))
        dtt_resumenPDarticulo_.Columns.Add("Total", GetType(Decimal))
        gdc_resumenPDarticulo_.DataSource = dtt_resumenPDarticulo_
        gdc_resumenPDarticulo_.ForceInitialize()
        gdv_resumenPDarticulo_.PopulateColumns()
        gdv_resumenPDarticulo_.Columns("Cantidad").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDarticulo_.Columns("Cantidad").DisplayFormat.FormatString = "n" & int_cantdecimales
        gdv_resumenPDarticulo_.Columns("Valor").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDarticulo_.Columns("Valor").DisplayFormat.FormatString = "n" & int_cantdecimales
        gdv_resumenPDarticulo_.Columns("Total").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDarticulo_.Columns("Total").DisplayFormat.FormatString = "n" & int_cantdecimales
        '-----------------------------------------------------------------------------------------------
        If Not IsNothing(obj_Produccion.PDarticulo_) Then
            If Not IsNothing(obj_Produccion.PDarticulo_.Items) Then
                For Each PDA As cls_PDarticulo_ In obj_Produccion.PDarticulo_.Items
                    Dim Row As DataRow = dtt_resumenPDarticulo_.NewRow
                    Row("Articulo") = PDA.articulo.ToString
                    If Not IsNothing(PDA.PDarticuloresultado_.Items(0).unidaddetalle) Then
                        Row("Cantidad") = PDA.PDarticuloresultado_.Items(0).unidaddetalle.CCantCargar(PDA.PDarticuloresultado_.Items(0).cantidad)
                        Row("Unidad") = PDA.PDarticuloresultado_.Items(0).unidaddetalle.ToString
                        Row("Valor") = PDA.PDarticuloresultado_.Items(0).unidaddetalle.CValCargar(PDA.PDarticuloresultado_.Items(0).valor)
                    Else
                        Row("Cantidad") = 0
                        Row("Valor") = 0
                    End If
                    If Not IsNothing(PDA.PDarticuloresultado_.Items(0).proveedor) Then
                        Row("Proveedor") = PDA.PDarticuloresultado_.Items(0).proveedor.ToString
                    End If
                    Row("Total") = Row("Cantidad") * Row("Valor") 'PDA.PDarticuloresultado_.Items(0).cantidad * PDA.PDarticuloresultado_.Items(0).valor
                    Total += Row("Total")
                    dtt_resumenPDarticulo_.Rows.Add(Row)
                Next
            End If
        End If

        txt_resumenvalorproduccion.Text += Total
        lcg_resumenMateriales.Text &= " Total: (" & Math.Round(Total, int_cantdecimales) & ") " & moneda.ToString
        'Prepara grid y datasource resumen----------------------------------------------------
        gdv_resumenPDarticulo_.Columns("Cantidad").Width = 50
        gdv_resumenPDarticulo_.Columns("Valor").Width = 10
        gdv_resumenPDarticulo_.Columns("Total").Width = 15


        Dim dtt_resumenPDmaquinariatarea_ As New DataTable
        dtt_resumenPDmaquinariatarea_.Columns.Add("Maquina", GetType(String))
        dtt_resumenPDmaquinariatarea_.Columns.Add("Tarea", GetType(String))
        dtt_resumenPDmaquinariatarea_.Columns.Add("Tiempo", GetType(String))
        dtt_resumenPDmaquinariatarea_.Columns.Add("Valor", GetType(Decimal))
        dtt_resumenPDmaquinariatarea_.Columns.Add("Total", GetType(Decimal))

        gdc_resumenPDmaquinariatarea_.DataSource = dtt_resumenPDmaquinariatarea_
        gdc_resumenPDmaquinariatarea_.ForceInitialize()
        gdv_resumenPDmaquinariatarea_.PopulateColumns()
        gdv_resumenPDmaquinariatarea_.Columns("Valor").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDmaquinariatarea_.Columns("Valor").DisplayFormat.FormatString = "n" & int_cantdecimales
        gdv_resumenPDmaquinariatarea_.Columns("Total").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDmaquinariatarea_.Columns("Total").DisplayFormat.FormatString = "n" & int_cantdecimales


        Dim dtt_resumenPDmaquinariatareaMantenimiento_ As New DataTable
        dtt_resumenPDmaquinariatareaMantenimiento_.Columns.Add("Maquina", GetType(String))
        dtt_resumenPDmaquinariatareaMantenimiento_.Columns.Add("Tarea", GetType(String))
        dtt_resumenPDmaquinariatareaMantenimiento_.Columns.Add("Tiempo", GetType(String))
        dtt_resumenPDmaquinariatareaMantenimiento_.Columns.Add("Valor", GetType(Decimal))
        dtt_resumenPDmaquinariatareaMantenimiento_.Columns.Add("Total", GetType(Decimal))

        gdc_resumenPDmaquinariatareaMantenimiento_.DataSource = dtt_resumenPDmaquinariatareaMantenimiento_
        gdc_resumenPDmaquinariatareaMantenimiento_.ForceInitialize()
        gdv_resumenPDmaquinariatareaMantenimiento_.PopulateColumns()
        gdv_resumenPDmaquinariatareaMantenimiento_.Columns("Valor").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDmaquinariatareaMantenimiento_.Columns("Valor").DisplayFormat.FormatString = "n" & int_cantdecimales
        gdv_resumenPDmaquinariatareaMantenimiento_.Columns("Total").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDmaquinariatareaMantenimiento_.Columns("Total").DisplayFormat.FormatString = "n" & int_cantdecimales
        '-----------------------------------------------------------------------------------------------
        Total = 0
        Dim TotalMantenimiento As Decimal = 0
        If Not IsNothing(obj_Produccion.PDmaquinariatarea_) Then
            For Each PDM As cls_PDmaquinariatarea_ In obj_Produccion.PDmaquinariatarea_.Items
                Dim Row As DataRow = dtt_resumenPDmaquinariatarea_.NewRow
                Dim RowM As DataRow = dtt_resumenPDmaquinariatareaMantenimiento_.NewRow
                Row("Tarea") = PDM.maquinariatarea.ToString
                RowM("Tarea") = PDM.maquinariatarea.ToString
                Row("Tiempo") &= CantidadMinToString(PDM.PDmaquinariatarearesultado_.Items(0).tiempo)
                Row("Maquina") = PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.ToString
                Row("Valor") = PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.valorhora
                Row("Total") = ((PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.valorhora) / 60) * PDM.PDmaquinariatarearesultado_.Items(0).tiempo
                Total += Row("Total")

                RowM("Tiempo") = CantidadMinToString(PDM.PDmaquinariatarearesultado_.Items(0).tiempo)
                RowM("Maquina") = PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.ToString
                RowM("Valor") = PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.valormantenimiento
                RowM("Total") = ((PDM.PDmaquinariatarearesultado_.Items(0).maquinaria.valormantenimiento) / 60) * PDM.PDmaquinariatarearesultado_.Items(0).tiempo
                TotalMantenimiento += RowM("Total")

                dtt_resumenPDmaquinariatarea_.Rows.Add(Row)
                dtt_resumenPDmaquinariatareaMantenimiento_.Rows.Add(RowM)
            Next
        End If
        lcg_resumenMaquinaria.Text &= " Total: (" & Math.Round(Total, int_cantdecimales) & ") " & moneda.ToString
        lcg_resumenMaquinariaMantenimiento.Text &= " Total: (" & Math.Round(TotalMantenimiento, int_cantdecimales) & ") " & moneda.ToString

        txt_resumenvalorproduccion.Text += Total
        txt_resumenvalorproduccion.Text += TotalMantenimiento
        gdv_resumenPDmaquinariatarea_.Columns("Tiempo").Width = 50
        gdv_resumenPDmaquinariatarea_.Columns("Valor").Width = 10
        gdv_resumenPDmaquinariatarea_.Columns("Total").Width = 15

        'Prepara grid y datasource resumen----------------------------------------------------
        Dim dtt_resumenPDproceso_ As New DataTable
        dtt_resumenPDproceso_.Columns.Add("Proceso", GetType(String))
        dtt_resumenPDproceso_.Columns.Add("Empleado", GetType(String))
        dtt_resumenPDproceso_.Columns.Add("Tiempo", GetType(String))
        dtt_resumenPDproceso_.Columns.Add("Valor", GetType(Decimal))
        dtt_resumenPDproceso_.Columns.Add("Total", GetType(Decimal))

        gdc_resumenPDproceso_.DataSource = dtt_resumenPDproceso_
        gdc_resumenPDproceso_.ForceInitialize()
        gdv_resumenPDproceso_.PopulateColumns()
        gdv_resumenPDproceso_.Columns("Valor").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDproceso_.Columns("Valor").DisplayFormat.FormatString = "n" & int_cantdecimales
        gdv_resumenPDproceso_.Columns("Total").DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
        gdv_resumenPDproceso_.Columns("Total").DisplayFormat.FormatString = "n" & int_cantdecimales
        '-----------------------------------------------------------------------------------------------
        Total = 0

        If Not IsNothing(obj_Produccion.PDproceso_) Then
            For Each PDP As cls_PDproceso_ In obj_Produccion.PDproceso_.Items
                If Not IsNothing(PDP.PDprocesoresultado_) Then
                    Dim Row As DataRow = dtt_resumenPDproceso_.NewRow
                    Row("Proceso") = PDP.proceso.ToString
                    Row("Tiempo") = CantidadMinToString(PDP.PDprocesoresultado_.Items(0).tiempo)
                    If Not IsNothing(PDP.PDprocesoresultado_.Items(0).personal) Then
                        Row("Empleado") = PDP.PDprocesoresultado_.Items(0).personal.ToString
                        Row("Valor") = PDP.PDprocesoresultado_.Items(0).personal.valorhora
                        Row("Total") = (PDP.PDprocesoresultado_.Items(0).personal.valorhora / 60) * PDP.PDprocesoresultado_.Items(0).tiempo
                    Else
                        Row("Valor") = 0
                        Row("Total") = 0
                    End If
                    Total += Row("Total")
                    dtt_resumenPDproceso_.Rows.Add(Row)
                End If
            Next
        End If
        lcg_resumenEmpleados.Text &= " Total: (" & Math.Round(Total, int_cantdecimales) & ") " & moneda.ToString
        txt_resumenvalorproduccion.Text += Total
        gdv_resumenPDproceso_.Columns("Tiempo").Width = 50
        gdv_resumenPDproceso_.Columns("Valor").Width = 10
        gdv_resumenPDproceso_.Columns("Total").Width = 15

        Dim dtt_producido As New DataTable
        dtt_producido.Columns.Add("Articulo", GetType(String))
        dtt_producido.Columns.Add("Cantidad", GetType(Decimal))
        dtt_producido.Columns.Add("Unidad", GetType(String))
        dtt_producido.Columns.Add("objeto", GetType(Object))

        Dim arow As DataRow = dtt_producido.Rows.Add
        arow("Articulo") = lbl_producidoArticulo.Text
        arow("Cantidad") = txt_producidoCantidad.Text
        arow("Unidad") = cbo_producidoUnidad.Text
        arow("objeto") = Nothing
        For Each row As DataRow In dtt_produccionresultado_.Rows
            Dim nrow As DataRow = dtt_producido.Rows.Add
            nrow("Articulo") = row("Articulo")
            nrow("Cantidad") = row("Cantidad")
            nrow("Unidad") = row("Unidad")
            nrow("objeto") = row("objeto")
        Next

        gdc_resumenProducido.DataSource = dtt_producido
        gdv_resumenProducido.PopulateColumns()
        gdv_resumenProducido.Columns("objeto").Visible = False

        Dim cantidad As Decimal = 0
        cantidad += txt_producidoCantidad.Text
        For Each row As DataRow In dtt_produccionresultado_.Rows
            If Not IsDBNull(row("objeto")) Then
                If CType(row("objeto"), cls_produccionresultado_).articulo.idarticulo = obj_Produccion.idarticulo Then
                    cantidad += CType(row("objeto"), cls_produccionresultado_).cantidad
                End If
            End If
        Next


        For Each unidaddetalle As cls_unidaddetalle_ In obj_Produccion.articulo.unidad.unidaddetalle_.Items
            cbo_resumenUnidadUnidad.Properties.Items.Add(unidaddetalle)
            cbo_resumenUnidadUnidadFinal.Properties.Items.Add(unidaddetalle)
            If obj_Produccion.articulo.idunidaddetalle = unidaddetalle.idunidaddetalle Then
                cbo_resumenUnidadUnidad.SelectedItem = unidaddetalle
                cbo_resumenUnidadUnidadFinal.SelectedItem = unidaddetalle
            End If
        Next
        If cantidad > 0 Then
            txt_resumenvalorunidad.Text = moneda.simbolo & " " & CType(cbo_resumenUnidadUnidad.SelectedItem, cls_unidaddetalle_).CValCargar(txt_resumenvalorproduccion.Text / cantidad)
        Else
            txt_resumenvalorunidad.Text = 0
        End If
        'txt_resumenvalorfinal.Text = moneda.simbolo & " " & txt_resumenvalorproduccion.Text / (CType(cbo_resumenUnidadUnidad.SelectedItem, cls_unidaddetalle_).CCantCargar(cantidad))
        txt_resumenvalorfinal.Text = txt_resumenvalorunidad.Text

        NoVal_ResumenArticulo.Text = "Produccion Nº " & obj_Produccion.idproduccion & " - Fecha: " & obj_Produccion.fecha.ToShortDateString & " - Articulo: " & obj_Produccion.articulo.ToString & " (" & obj_Produccion.articulo.unidad.ToString & ")"

        txt_resumenvalorproduccion.Text = moneda.simbolo & " " & txt_resumenvalorproduccion.Text

        gdv_resumenPDarticulo_.BestFitColumns()
        gdv_resumenPDmaquinariatarea_.BestFitColumns()
        gdv_resumenPDmaquinariatareaMantenimiento_.BestFitColumns()
        gdv_resumenPDproceso_.BestFitColumns()
    End Sub


    Private Sub SimpleButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OrdendeProduccion.Click
        Dim obj_command As New SqlClient.SqlCommand()
        Dim obj_Conexion As New cls_Conexion
        obj_Conexion.Conectar()
        With obj_command
            .CommandType = CommandType.StoredProcedure
            .Connection = obj_Conexion.obj_SqlConnection
            .CommandText = "produccion__reporte"
            .Parameters.Add("@idproduccion", SqlDbType.Int).Value = txt_ID.Text
        End With
        Dim obj_Adapter As New SqlClient.SqlDataAdapter(obj_command)
        Dim dts_Movimientos As New dts_produccion
        obj_Adapter.Fill(dts_Movimientos.Tables(0))

        Dim report As New xtr_produccion
        report.DataSource = dts_Movimientos

        report.lbl_articulo.Text = obj_Produccion.articulo.ToString
        report.lbl_Articulo2.Text = obj_Produccion.articulo.ToString & "  ______________________________  " & obj_Produccion.articulo.unidaddetalle.ToString
        report.lbl_ID.Text = "ORDEN DE PRODUCCION Nº: " & obj_Produccion.idproduccion
        report.lbl_Fecha.Text = "FECHA DE IMPRESION: " & obj_Produccion.fecha.ToShortDateString

        obj_Conexion.Desconectar()
        'report.lblFecha.Text = dteFecha.ToShortDateString
        'report.lblFecha2.Text = dteFecha.ToShortDateString
        report.ShowPreview()
    End Sub

    Private Sub opt_produccion_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opt_produccion.SelectedIndexChanged
        If opt_produccion.SelectedIndex = 1 Then
            txt_Personal.Enabled = True
        Else
            txt_Personal.Enabled = False
        End If
    End Sub

    Private Sub txt_Personal_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_Personal.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Dim personal_ As New cls_personal_
        personal_.CargarTodos()
        buscar = New xtf_buscardor("Personal", personal_, {"legajo|Legajo", "apellidonombre|Nombre"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_Personal.Text = buscar.obj_resultado.ToString
            txt_Personal.Tag = buscar.obj_resultado
        End If
    End Sub

    Private Sub txt_PDmaquinariatarearesultadoMaquinaria_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_PDmaquinariatarearesultadoMaquinaria.EditValueChanged

    End Sub

    Private Sub txt_AProducir_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_AProducir.EditValueChanged

    End Sub
End Class
